home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO040.dsk / UTILS / PRINTER.bas < prev    next >
BASIC Source File  |  2012-02-16  |  5KB  |  195 lines

  1. 10 D$ =  CHR$(4)
  2. 20  PRINT  CHR$(27);: PRINT  CHR$(17): REM  40 COL.
  3. 30  TEXT : HOME 
  4. 40 V = 1: GOSUB 50:V = 24: GOSUB 50: GOTO 70
  5. 50  VTAB (V): HTAB (1): FOR X = 1 TO 39: PRINT "_";: NEXT 
  6. 60  RETURN 
  7. 70  VTAB (5): HTAB (7)
  8. 80  PRINT "[ THIS PROGRAM IS FREEWARE ]"
  9. 90  PRINT : PRINT : HTAB (4)
  10. 100  PRINT "YOU ARE FREE TO DISTRIBUTE COPIES"
  11. 110  PRINT : HTAB (8)
  12. 120  PRINT "BUT YOU MAY NOT SELL THEM."
  13. 130  VTAB (18): HTAB (11)
  14. 140  PRINT "THE FREEWARE PROJECT"
  15. 150  PRINT : HTAB (11)
  16. 160  PRINT "WALDEN SOFTWARE, INC."
  17. 170  PRINT : HTAB (12)
  18. 180  PRINT "(C) 1984, P. LUTUS"
  19. 190  FOR PAUSE = 0 TO 2500: NEXT 
  20. 200  REM  
  21. 210  REM  SET UP PRINTER PROGRAM
  22. 220  REM  
  23. 230  DIM M$(1,7)
  24. 240  DIM V(1,3)
  25. 250 V(0,0) =  PEEK(48688):V(0,1) =  PEEK(48689)
  26. 260  FOR X = 0 TO 7
  27. 270  READ M$(0,X): READ M$(1,X)
  28. 280  NEXT X
  29. 290  REM 
  30. 300  REM  INSTALL ERASER
  31. 310  REM 
  32. 320 A = 768
  33. 330  READ B
  34. 340  POKE A,B
  35. 350 A = A +1
  36. 360  IF B < >96  THEN 330
  37. 370  REM  
  38. 380  REM  TAKE USER'S INPUTS
  39. 390  REM  
  40. 400  PRINT  CHR$(27); CHR$(17)
  41. 410  FOR X = 0 TO 7
  42. 420  HOME 
  43. 430  PRINT "*** Prepare for Printing ***";
  44. 440  GOSUB 780
  45. 450 Q$ = M$(1,X)
  46. 460  INPUT "";L$
  47. 470  IF X = 2  THEN 490
  48. 480  IF L$ = ""  THEN L$ = M$(1,X)
  49. 490  IF X < >0  THEN 550
  50. 500  IF L$ < >"?"  THEN 540
  51. 510  HOME 
  52. 520  PRINT D$;"CAT,TTXT,D1"
  53. 530  GOTO 440
  54. 540  IF L$ = "Q"  OR L$ = "q"  THEN  HOME : PRINT  CHR$(4);"-/IAC.43/STARTUP"
  55. 550  IF X < >2  THEN 680
  56. 560  IF L$ < >"?"  THEN 680
  57. 570  HOME 
  58. 580  PRINT "The (optional) Top Line entry is placed"
  59. 590  PRINT "at the top of each page. If you include"
  60. 600  PRINT "a '#' in your entry, the page number"
  61. 610  PRINT "will be printed at that location."
  62. 620  PRINT "Example: 'Page #' will be printed as"
  63. 630  PRINT "'Page 1' on the first page, 'Page 2'"
  64. 640  PRINT "on the second, and so forth.": PRINT 
  65. 650  INPUT "(Press Return) :";L$
  66. 660  HOME 
  67. 670  GOTO 440
  68. 680 M$(1,X) = L$
  69. 690  NEXT X
  70. 700  HOME 
  71. 710  PRINT "Here are your Selections :";
  72. 720 X = 7: GOSUB 780
  73. 730  PRINT : PRINT 
  74. 740  INPUT "Are The Selections Okay (Yes/No) :";L$
  75. 750  GOSUB 860
  76. 760  IF C$ < >"Y"  THEN 400
  77. 770  GOTO 1140
  78. 780  FOR Y = 0 TO X
  79. 790  PRINT : PRINT 
  80. 800  PRINT M$(0,Y);" :";
  81. 810 H =  PEEK(36)
  82. 820  PRINT M$(1,Y);
  83. 830  POKE 36,H
  84. 840  NEXT Y
  85. 850  RETURN 
  86. 860 C$ = ""
  87. 870  IF L$ = ""  THEN  RETURN 
  88. 880 C$ =  LEFT$(L$,1)
  89. 890 C =  ASC(C$)
  90. 900  IF C >96  THEN C = C -32
  91. 910 C$ =  CHR$(C)
  92. 920  RETURN 
  93. 930  REM  
  94. 940  REM  THESE ARE THE DEFAULT VALUES
  95. 950  REM  
  96. 960  DATA  "File Name(?=Catalog,Q=Quit)","" 
  97. 970  DATA   "Printer Slot (0=Screen)","1"
  98. 980  DATA   "Top Line(?=Help)","- # -"
  99. 990  DATA  "Left Margin","10" 
  100. 1000  DATA  "Right Margin","70" 
  101. 1010  DATA  "Number of Printed Lines","58" 
  102. 1020  DATA  "Page Length in Lines","66" 
  103. 1030  DATA  "Automatic Paper Feed","No" 
  104. 1040  REM  
  105. 1050  REM  THIS SECTION PRINTS
  106. 1060  REM  
  107. 1070  POKE (48688),V(Z,0): POKE (48689),V(Z,1)
  108. 1080  RETURN 
  109. 1090 M = LM
  110. 1100  IF M = 0  THEN  RETURN 
  111. 1110  FOR X = 1 TO M
  112. 1120  PRINT " ";
  113. 1130  NEXT : RETURN 
  114. 1140  PRINT D$;"PR#";M$(1,1)
  115. 1150  PRINT 
  116. 1160 V(1,0) =  PEEK(48688):V(1,1) =  PEEK(48689)
  117. 1170 Z = 0: GOSUB 1070
  118. 1180  HOME 
  119. 1190  PRINT "Loading "; CHR$(34);M$(1,0); CHR$(34)
  120. 1200 BA =  PEEK(110) +1:BA = BA *256
  121. 1210  POKE 0,0
  122. 1220  POKE 1,( PEEK(110) +1)
  123. 1230  POKE 2,( PEEK(112) -1)
  124. 1240  CALL 768
  125. 1250  ONERR  GOTO 1850
  126. 1260  PRINT D$;"BLOAD";M$(1,0);",A";BA;",TTXT,D1"
  127. 1270  POKE 216,0
  128. 1280 C$ =  LEFT$(M$(1,7),1)
  129. 1290 SP = 1: IF C$ = "Y"  OR C$ = "y"  THEN SP = 0
  130. 1300 LM =  VAL(M$(1,3))
  131. 1310 RM =  VAL(M$(1,4))
  132. 1320 PL =  VAL(M$(1,5))
  133. 1330 PI =  VAL(M$(1,6))
  134. 1340 LL = RM -LM
  135. 1350  HOME 
  136. 1360  PRINT "(Press 'ESC' to stop print)": PRINT 
  137. 1370  INPUT "Press Return to Begin Printing :";L$
  138. 1380 Z = 1: GOSUB 1070
  139. 1390 P = 1
  140. 1400  IF SP = 0  THEN 1440
  141. 1410 Z = 0: GOSUB 1070
  142. 1420  PRINT  CHR$(7): INPUT "Load paper then press Return :";L$
  143. 1430 Z = 1: GOSUB 1070
  144. 1440 L = 0
  145. 1450  IF M$(1,2) = ""  THEN 1570
  146. 1460 L$ = M$(1,2)
  147. 1470  GOSUB 1090
  148. 1480 M = ((RM -LM) -( LEN(L$)))/2
  149. 1490  GOSUB 1110
  150. 1500  FOR X = 1 TO  LEN(L$)
  151. 1510 C$ =  MID$ (L$,X,1)
  152. 1520  IF C$ < >"#"  THEN  PRINT C$;
  153. 1530  IF C$ = "#"  THEN  PRINT P;
  154. 1540  NEXT X
  155. 1550  PRINT : PRINT 
  156. 1560 L = L +2
  157. 1570  GOSUB 1090
  158. 1580 TL = LL -1
  159. 1590 X = 0
  160. 1600 Q =  PEEK(BA +X)
  161. 1610  IF Q = 32  THEN TL = X
  162. 1620  IF Q = 0  OR Q = 13  THEN TL = X: GOTO 1640
  163. 1630 X = X +1: IF X <LL  THEN 1600
  164. 1640  IF TL = 0  THEN 1720
  165. 1650  FOR X = 0 TO TL -1
  166. 1660 C =  PEEK(BA +X)
  167. 1670  PRINT  CHR$(C);
  168. 1680  NEXT 
  169. 1690  IF TL < >LL -1  THEN 1720
  170. 1700 R =  PEEK(BA +TL)
  171. 1710  IF R < >32  AND R < >13  THEN 1730
  172. 1720 TL = TL +1
  173. 1730 BA = BA +TL
  174. 1740  PRINT 
  175. 1750  IF Q = 0  THEN 1820
  176. 1760  IF  PEEK(49152) = 155  THEN 1820
  177. 1770 L = L +1
  178. 1780  IF L <PL  THEN 1570
  179. 1790  IF L <PI  THEN 1740
  180. 1800 P = P +1
  181. 1810  GOTO 1400
  182. 1820 Z = 0: GOSUB 1070
  183. 1830  POKE 49168,0
  184. 1840  GOTO 400
  185. 1850  POKE 216,0
  186. 1860  PRINT  CHR$(7)
  187. 1870  PRINT "Error trying to load "; CHR$(34);M$(1,0); CHR$(34)
  188. 1880  PRINT 
  189. 1890  INPUT "(Press Return) :";L$
  190. 1900  GOTO 400
  191. 1910  REM 
  192. 1920  REM ERASER CODE
  193. 1930  REM 
  194. 1940  DATA 169,0,168,145,0,200,208,251
  195. 1950  DATA 230,1,165,1,197,2,208,240,96